home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
-
- public class TextEffectsCanvas2 extends Canvas implements Runnable {
- Thread appThread;
- Image osImage;
- Graphics osg;
- Color bkColor;
- Image bkImage;
- int delayTime;
- int sleepTime;
- String message;
- Font font;
- int charWidth;
- Color[] colors = new Color[13];
- char theChar;
- int colorIndex;
- // $FF: renamed from: fm java.awt.FontMetrics
- FontMetrics field_0;
- int xOffset;
- int yOffset;
- int xPos;
- int yPos;
- boolean randomColors;
- Color textColor;
- boolean jitterText;
- boolean waveText;
- boolean fanText;
- int baseLine;
- int angleIndex;
- double angleStep = (double)0.25F;
- int width;
- int height;
- int centerX;
- int centerY;
- double[] cosines;
- double[] sines;
- int cosSinSize;
- int fanDisplayTime;
- int[] fanXPos;
- int fanMovements;
- int fanCount;
- boolean animatingFan;
-
- public TextEffectsCanvas2(Applet var1, int var2) {
- this.colors[0] = Color.black;
- this.colors[1] = Color.blue;
- this.colors[2] = Color.cyan;
- this.colors[3] = Color.darkGray;
- this.colors[4] = Color.gray;
- this.colors[5] = Color.green;
- this.colors[6] = Color.lightGray;
- this.colors[7] = Color.magenta;
- this.colors[8] = Color.orange;
- this.colors[9] = Color.pink;
- this.colors[10] = Color.red;
- this.colors[11] = Color.white;
- this.colors[12] = Color.yellow;
- this.GetParameters(var1, var2);
- this.PreComputeValues();
- this.fanXPos = new int[this.message.length()];
- }
-
- void GetParameters(Applet var1, int var2) {
- String var3 = var1.getParameter("textEffectsBkColor" + var2);
- this.bkColor = AppletParam2.GetColor(var3, (Color)null);
- if (this.bkColor != null) {
- ((Component)this).setBackground(this.bkColor);
- }
-
- var3 = var1.getParameter("textEffectsBkImage" + var2);
- this.bkImage = var1.getImage(var1.getCodeBase(), var3);
- var3 = var1.getParameter("textEffectsInterval" + var2);
- this.delayTime = AppletParam2.GetInt(var3, 250);
- this.sleepTime = this.delayTime;
- var3 = var1.getParameter("textEffectsText" + var2);
- this.message = AppletParam2.GetString(var3, "Message");
- var3 = var1.getParameter("textEffectsFont" + var2);
- this.font = AppletParam2.GetJavaFont(var3);
- this.field_0 = ((Component)this).getFontMetrics(this.font);
- var3 = var1.getParameter("textEffectsRandomize" + var2);
- this.randomColors = AppletParam2.GetBoolean(var3, true);
- var3 = var1.getParameter("textEffectsColor" + var2);
- this.textColor = AppletParam2.GetColor(var3, Color.black);
- var3 = var1.getParameter("textEffectsJitter" + var2);
- this.jitterText = AppletParam2.GetBoolean(var3, true);
- if (this.jitterText) {
- this.waveText = false;
- this.fanText = false;
- }
-
- var3 = var1.getParameter("textEffectsWave" + var2);
- this.waveText = AppletParam2.GetBoolean(var3, false);
- if (this.waveText) {
- this.jitterText = false;
- this.fanText = false;
- }
-
- var3 = var1.getParameter("textEffectsFan" + var2);
- this.fanText = AppletParam2.GetBoolean(var3, false);
- if (this.fanText) {
- this.jitterText = false;
- this.waveText = false;
- this.animatingFan = true;
- }
-
- var3 = var1.getParameter("textEffectsFanTime" + var2);
- this.fanDisplayTime = AppletParam2.GetInt(var3, 5000);
- }
-
- public void Start() {
- this.appThread = new Thread(this);
- this.appThread.start();
- }
-
- public void Stop() {
- this.appThread.stop();
- this.appThread = null;
- }
-
- public void update(Graphics var1) {
- System.out.println("update");
- if (this.osImage == null) {
- this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- this.osg = this.osImage.getGraphics();
- }
-
- this.osg.setColor(((Component)this).getBackground());
- this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- if (this.bkImage != null) {
- int var2 = this.bkImage.getWidth(this);
- int var3 = this.bkImage.getHeight(this);
- int var4 = ((Component)this).size().width / var2;
- int var5 = ((Component)this).size().height / var3;
- ++var4;
- ++var5;
-
- for(int var6 = 0; var6 < var5; ++var6) {
- for(int var7 = 0; var7 < var4; ++var7) {
- this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
- }
- }
- }
-
- this.osg.setFont(this.font);
- this.baseLine = ((Component)this).size().height / 2 + this.field_0.getAscent() / 2 - 5;
- this.field_0.stringWidth(this.message);
- this.height = (((Component)this).size().height - 1 - this.field_0.getAscent()) / 2;
- this.centerY = ((Component)this).size().height - this.height;
- if (!this.jitterText && !this.waveText) {
- if (this.fanText) {
- System.out.println("Drawing fan text. fanCount = " + this.fanCount);
- this.xPos = ((Component)this).size().width / 2;
- this.yPos = this.baseLine;
- System.out.println("Characters before: " + 0 + "-" + (this.fanCount - 1));
- System.out.println("Middle chars: " + this.fanCount + "-" + (this.message.length() - this.fanCount - 1));
- System.out.println("Characters after: " + (this.message.length() - this.fanCount) + "-" + (this.message.length() - 1));
- if (this.fanCount == 0) {
- for(int var9 = 0; var9 < this.message.length(); ++var9) {
- if (this.randomColors) {
- this.colorIndex = (int)(Math.random() * (double)13.0F);
- this.osg.setColor(this.colors[this.colorIndex]);
- } else {
- this.osg.setColor(this.textColor);
- }
-
- this.osg.drawString(this.message.substring(var9, var9 + 1), this.xPos, this.yPos);
- }
- }
-
- this.osg.setColor(this.textColor);
- this.xPos -= this.field_0.stringWidth(this.message.substring(0, this.fanCount));
- this.osg.drawString(this.message.substring(0, this.fanCount), this.xPos, this.yPos);
- int var10 = 0;
-
- for(int var12 = this.fanCount; var12 <= this.message.length() - this.fanCount - 1; ++var12) {
- this.osg.setColor(this.textColor);
- this.xPos = ((Component)this).size().width / 2;
- int var15 = this.field_0.stringWidth(this.message.substring(var12, var12 + 1));
- if (var15 > var10) {
- var10 = var15;
- }
-
- this.osg.drawString(this.message.substring(var12, var12 + 1), this.xPos, this.yPos);
- }
-
- this.osg.setColor(this.textColor);
- this.xPos = ((Component)this).size().width / 2;
- this.xPos += var10;
- this.osg.drawString(this.message.substring(this.message.length() - this.fanCount, this.message.length()), this.xPos, this.yPos);
- }
- } else {
- for(int var8 = 0; var8 < this.message.length(); ++var8) {
- String var11 = this.message.substring(var8, var8 + 1);
- int var14 = this.field_0.stringWidth(var11);
- if (this.randomColors) {
- this.colorIndex = (int)(Math.random() * (double)13.0F);
- this.osg.setColor(this.colors[this.colorIndex]);
- } else {
- this.osg.setColor(this.textColor);
- }
-
- if (this.jitterText) {
- this.xOffset = (int)(Math.random() * (double)10.0F);
- this.yOffset = (int)(Math.random() * (double)10.0F);
- this.xPos = var8 * this.charWidth + this.xOffset;
- this.yPos = this.baseLine + this.yOffset;
- } else if (this.waveText) {
- this.width = (this.charWidth - var14) / 2;
- this.centerX = var8 * this.charWidth + this.width;
- this.xPos = (int)(this.cosines[(this.angleIndex + var8) % this.cosSinSize] * (double)this.width) + this.centerX;
- this.yPos = (int)(this.sines[(this.angleIndex + var8) % this.cosSinSize] * (double)this.height) + this.centerY;
- }
-
- this.osg.drawString(var11, this.xPos, this.yPos);
- }
- }
-
- var1.drawImage(this.osImage, 0, 0, this);
- System.out.println("end update");
- }
-
- public void run() {
- while(true) {
- try {
- ((Component)this).repaint();
- if (this.waveText) {
- ++this.angleIndex;
- if (this.angleIndex > this.cosSinSize) {
- this.angleIndex = 0;
- }
- } else if (this.fanText) {
- System.out.println("fanCount = " + this.fanCount);
- if (this.animatingFan) {
- if (this.fanCount + 1 > this.fanMovements) {
- this.animatingFan = false;
- this.sleepTime = this.fanDisplayTime;
- } else {
- ++this.fanCount;
- this.sleepTime = this.delayTime;
- }
- }
- }
-
- Thread.sleep((long)this.sleepTime);
- if (this.fanText && !this.animatingFan) {
- this.fanCount = 0;
- this.animatingFan = true;
- }
- } catch (InterruptedException var1) {
- }
- }
- }
-
- public Dimension minimumSize() {
- return new Dimension(10, 10);
- }
-
- public Dimension preferredSize() {
- return new Dimension(10, 10);
- }
-
- public synchronized void reshape(int var1, int var2, int var3, int var4) {
- super.reshape(var1, var2, var3, var4);
- this.osImage = null;
- this.osg = null;
- if (this.message.length() == 0) {
- this.charWidth = 0;
- } else {
- this.charWidth = ((Component)this).size().width / this.message.length();
- }
-
- this.InitializeFanXPos();
- }
-
- void PreComputeValues() {
- this.cosSinSize = (int)((Math.PI * 2D) / this.angleStep + (double)1.0F);
- this.cosines = new double[this.cosSinSize];
- this.sines = new double[this.cosSinSize];
- int var1 = 0;
-
- for(double var2 = (double)0.0F; var2 < (Math.PI * 2D); var2 += this.angleStep) {
- this.cosines[var1] = Math.cos(var2);
- ++var1;
- }
-
- var1 = 0;
-
- for(double var4 = (double)0.0F; var4 < (Math.PI * 2D); var4 += this.angleStep) {
- this.sines[var1] = Math.sin(var4);
- ++var1;
- }
-
- }
-
- public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
- ((Component)this).repaint();
- return true;
- }
-
- void InitializeFanXPos() {
- for(int var1 = 0; var1 < this.message.length(); ++var1) {
- this.fanXPos[var1] = ((Component)this).size().width / 2 - this.field_0.charWidth('W');
- }
-
- this.fanMovements = this.message.length() / 2;
- this.fanCount = 0;
- }
- }
-